import Vue from 'vue'
// import App from './App.vue'
// import Day4  from './day4/day4App'
import Day5  from './day5/day5App'
import Vuex from 'vuex'
import './globalcomponents/index.js'

Vue.config.productionTip = false

Vue.component('my-global-com',{
  render:h=>h('h1',{},'哈哈哈')
})

Vue.use(Vuex)// 使得插件能够挂在Vue实例上

let store = new Vuex.Store({
  state:{
    // 用来存储公用数据
    count:100
  },
  mutations:{
    // 存放的是 各种用来修改state中的数据的方法
    // 想要执行这里的方法 我们只能通过 commit(方法名，用户传递的参数)
    addCount(state,option){
      // 参数 是vuex传进来的  state对应的就是上边的哪个state, option对应的是用户传递的
      // 这里的函数 最多只能接受一个用户传递的参数
      // console.log(state,option)
      // console.log(arguments)
      state.count += option
    }
  },
  actions:{
    // 这里同步异步都可以
    // 这里的方法是通过 dispatch(方法名，用户传递的参数) 调用
    // 这里的函数最终还是需要调用 mutations中的方法来改变状态
    addCountAsync(store,option){
      setTimeout(() => {
        store.commit('addCount',option)
      }, 1000);
    }
  }
})




new Vue({
  render: h => h(Day5), // jsx写法
  store:store // 把vuex实例注入到根实例中, 所有的实例都能通过$store.state使用对应额属性
}).$mount('#app')
